package cn.xshi.common.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
 *
 * 权限注解
 * 〈功能详细描述〉
 *
 * @author 邓纯杰
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
@Target(value = {java.lang.annotation.ElementType.METHOD})
@Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface Auth {

    String value() default "";//拦截方法（可解决动态参数Rest风格）

    boolean enableOnlyKeySecurity() default false;//仅需开启密钥即可认证（可用于对接第三方使用） 默认否

    AuthorizationType authenticationType() default AuthorizationType.REQUIRED_LOGIN;//授权类型 默认必须登录且拦截

    /**
     * 授权类型
     */
    enum AuthorizationType {
        REQUIRED_LOGIN,     //必须登录且需鉴权 优先级 小于enableOnlyKeySecurity
        REQUIRED_LOGIN_NOT_AUTH, //必须登录并且无需开启授权
        NOT_REQUIRED_LOGIN //无需登录
    }
}
